<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>MoonBit中英文混合编程语言</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/4.3.1/reveal.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/4.3.1/theme/black.min.css">
    <style>
        .slide-container {
            display: flex;
            flex-direction: column;
            height: 100%;
        }
        .slide-header {
            flex: 0 0 auto;
            padding: 10px;
            background-color: #333;
            color: white;
            text-align: center;
        }
        .slide-content {
            flex: 1 1 auto;
            padding: 20px;
            overflow-y: auto;
        }
        .slide-footer {
            flex: 0 0 auto;
            padding: 10px;
            background-color: #333;
            color: white;
            text-align: center;
            font-size: 0.8em;
        }
        .code-block {
            background-color: #222;
            padding: 10px;
            border-radius: 5px;
            font-family: 'Courier New', monospace;
            font-size: 0.8em;
            margin: 10px 0;
        }
        .keyword-table {
            width: 100%;
            border-collapse: collapse;
            margin: 20px 0;
        }
        .keyword-table th, .keyword-table td {
            border: 1px solid #666;
            padding: 8px;
            text-align: left;
        }
        .keyword-table th {
            background-color: #444;
        }
        .feature-list {
            text-align: left;
            margin: 20px 0;
        }
        .feature-list li {
            margin: 10px 0;
        }
    </style>
</head>
<body>
    <div class="reveal">
        <div class="slides">
            <!-- 封面页 -->
            <section>
                <h1>MoonBit中英文混合编程语言</h1>
                <h3>一种结合中文可读性与现代语法特性的编程语言</h3>
                <p>
                    <small>基于MoonBit实现，采用类似Swift的语法风格</small>
                </p>
            </section>

            <!-- 项目概述 -->
            <section>
                <h2>项目概述</h2>
                <div class="feature-list">
                    <li>实现了一个编译器，将中文关键字代码转换为标准MoonBit代码</li>
                    <li>结合了中文的可读性和Swift语言的现代语法特性</li>
                    <li>保持与MoonBit的完全兼容性</li>
                    <li>为中文用户提供更自然的编程体验</li>
                </div>
            </section>

            <!-- 中文关键字映射 -->
            <section>
                <h2>中文关键字映射</h2>
                <table class="keyword-table">
                    <thead>
                        <tr>
                            <th>中文关键字</th>
                            <th>MoonBit对应</th>
                            <th>用途</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr><td>法</td><td>fn</td><td>函数定义</td></tr>
                        <tr><td>令</td><td>let</td><td>常量声明</td></tr>
                        <tr><td>变量</td><td>var</td><td>变量声明</td></tr>
                        <tr><td>若</td><td>if</td><td>条件语句</td></tr>
                        <tr><td>否则</td><td>else</td><td>否则分支</td></tr>
                        <tr><td>环</td><td>for</td><td>循环语句</td></tr>
                        <tr><td>当</td><td>while</td><td>while循环</td></tr>
                        <tr><td>返</td><td>return</td><td>返回语句</td></tr>
                        <tr><td>结构</td><td>struct</td><td>结构体定义</td></tr>
                        <tr><td>举</td><td>enum</td><td>枚举定义</td></tr>
                    </tbody>
                </table>
            </section>

            <!-- 更多中文关键字映射 -->
            <section>
                <h2>更多中文关键字映射</h2>
                <table class="keyword-table">
                    <thead>
                        <tr>
                            <th>中文关键字</th>
                            <th>MoonBit对应</th>
                            <th>用途</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr><td>匹配</td><td>match</td><td>模式匹配</td></tr>
                        <tr><td>公</td><td>pub</td><td>公开访问</td></tr>
                        <tr><td>在</td><td>in</td><td>在...中</td></tr>
                        <tr><td>一些</td><td>Some</td><td>可选类型Some</td></tr>
                        <tr><td>无</td><td>None</td><td>可选类型None</td></tr>
                        <tr><td>完</td><td>end</td><td>结束标记</td></tr>
                    </tbody>
                </table>
            </section>

            <!-- 语法特性示例 -->
            <section>
                <h2>语法特性示例</h2>
                <div class="code-block">
                    // 函数定义<br>
                    法 加法(甲: Int, 乙: Int) -> Int {<br>
                    &nbsp;&nbsp;返 甲 + 乙<br>
                    }
                </div>
                <div class="code-block">
                    // 变量声明<br>
                    令 名字 = "张三"<br>
                    变量 年龄 = 25
                </div>
                <div class="code-block">
                    // 条件语句<br>
                    若 年龄 >= 18 {<br>
                    &nbsp;&nbsp;println("成年人")<br>
                    } 否则 {<br>
                    &nbsp;&nbsp;println("未成年人")<br>
                    }
                </div>
            </section>

            <!-- 循环和结构体示例 -->
            <section>
                <h2>循环和结构体示例</h2>
                <div class="code-block">
                    // 循环语句<br>
                    环 i 在 0..10 {<br>
                    &nbsp;&nbsp;println(i)<br>
                    }
                </div>
                <div class="code-block">
                    // 结构体<br>
                    结构 人 {<br>
                    &nbsp;&nbsp;公 姓名: String<br>
                    &nbsp;&nbsp;公 年龄: Int<br>
                    }
                </div>
                <div class="code-block">
                    // 枚举<br>
                    举 颜色 {<br>
                    &nbsp;&nbsp;红<br>
                    &nbsp;&nbsp;绿<br>
                    &nbsp;&nbsp;蓝<br>
                    }
                </div>
            </section>

            <!-- 核心组件 -->
            <section>
                <h2>核心组件</h2>
                <div class="feature-list">
                    <li><strong>词法分析器 (lexer.mbt)</strong> - 识别中文关键字和生成标记流</li>
                    <li><strong>语法分析器 (parser.mbt)</strong> - 将标记流转换为抽象语法树(AST)</li>
                    <li><strong>代码生成器 (codegen.mbt)</strong> - 将AST转换为标准MoonBit代码</li>
                    <li><strong>主程序 (main.mbt)</strong> - 整合所有组件并提供编译流程</li>
                </div>
            </section>

            <!-- 编译器工作流程 -->
            <section>
                <h2>编译器工作流程</h2>
                <ol>
                    <li><strong>词法分析</strong> - 将源代码分解为标记流</li>
                    <li><strong>语法分析</strong> - 将标记流转换为抽象语法树(AST)</li>
                    <li><strong>代码生成</strong> - 将AST转换为标准MoonBit代码</li>
                </ol>
                <p>整个过程保持与MoonBit的完全兼容性</p>
            </section>

            <!-- 示例程序 -->
            <section>
                <h2>示例程序</h2>
                <div class="feature-list">
                    <li><strong>基础示例</strong> - 展示基本语法特性</li>
                    <li><strong>面向对象示例</strong> - 展示结构体和枚举的使用</li>
                    <li><strong>函数式编程示例</strong> - 展示函数式编程特性</li>
                </div>
                <p>每个示例都演示了不同编程范式的应用</p>
            </section>

            <!-- 技术实现亮点 -->
            <section>
                <h2>技术实现亮点</h2>
                <div class="feature-list">
                    <li><strong>中文关键字处理</strong> - 正确识别和处理中文字符</li>
                    <li><strong>抽象语法树设计</strong> - 完整的AST结构支持复杂语法</li>
                    <li><strong>模块化设计</strong> - 各组件职责清晰，易于扩展</li>
                    <li><strong>兼容性保证</strong> - 生成的代码完全兼容MoonBit</li>
                </div>
            </section>

            <!-- 项目成果 -->
            <section>
                <h2>项目成果</h2>
                <div class="feature-list">
                    <li>完整的编译器实现</li>
                    <li>丰富的示例代码</li>
                    <li>完善的文档</li>
                    <li>验证了编程语言本地化的可行性</li>
                </div>
            </section>

            <!-- 局限性与改进方向 -->
            <section>
                <h2>局限性与改进方向</h2>
                <h3>当前局限性</h3>
                <div class="feature-list">
                    <li>错误处理机制相对简单</li>
                    <li>性能优化尚未完成</li>
                    <li>部分高级语言特性支持有限</li>
                </div>
                <h3>未来改进方向</h3>
                <div class="feature-list">
                    <li>完善错误处理和诊断信息</li>
                    <li>支持更多MoonBit语言特性</li>
                    <li>添加IDE支持和语法高亮</li>
                </div>
            </section>

            <!-- 结论 -->
            <section>
                <h2>结论</h2>
                <div class="feature-list">
                    <li>成功实现了一个基于MoonBit的中英文混合编程语言编译器</li>
                    <li>验证了编程语言本地化的可行性</li>
                    <li>为中文用户提供了一种更自然的编程体验</li>
                    <li>保持了与现有生态系统的兼容性</li>
                    <li>为未来的编程语言设计提供了新的思路和方向</li>
                </div>
            </section>

            <!-- 致谢 -->
            <section>
                <h1>谢谢观看</h1>
                <p>欢迎提出宝贵意见和建议</p>
            </section>
        </div>
    </div>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/4.3.1/reveal.min.js"></script>
    <script>
        Reveal.initialize({
            controls: true,
            progress: true,
            history: true,
            center: true,
            transition: 'slide',
            // More info https://github.com/hakimel/reveal.js#configuration
            dependencies: [
                // Cross-browser shim that fully implements classList - https://github.com/eligrey/classList.js/
                { src: 'https://cdnjs.cloudflare.com/ajax/libs/reveal.js/4.3.1/plugin/classList/classList.js', condition: function() { return !document.body.classList; } }
            ]
        });
    </script>
</body>
</html>
